/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package submissao;

/**
 *
 * @author Vitor
 */

import Janelas.JanelaInicial;
import java.io.BufferedReader;
import java.io.*;
import java.util.Scanner;
import java.util.ArrayList;
import org.jdesktop.application.Application;
import org.jdesktop.application.SingleFrameApplication;

/**
 * The main class of the application.
 */
public class principal{



    /**
     * Main method launching the application.
     */
    public static void main(String[] args) throws IOException {

        //Villela : Versão com interface
        ConexaoBD conexao = new ConexaoBD();
        JanelaInicial janela = new JanelaInicial(conexao);
        janela.setVisible(true);

        //Valter : Versão sem interface
        //console();
        
    }

    /**
     * Este método irá acionar o sistema no console 
     * @throws IOException
     */
    private static void console() throws IOException{
        BufferedReader reader  = new BufferedReader(new InputStreamReader(System.in));
        ConexaoBD conexao = new ConexaoBD();
        Trabalho trabalho = new Trabalho();
        String input;
        int number;

        int iOpcao = -1;
        while (iOpcao != 0){
            System.out.println("-- SISTEMA DE SUBMISSÃO DE DOCUMENTOS CIENTÍFICOS --");
            System.out.println("(1) SUBMETER DOCUMENTO");
            System.out.println("(2) CONSULTAR DOCUMENTOS");
            System.out.println("(0) SAIR");
            System.out.print(">> ");
            input = reader.readLine();
            iOpcao = Integer.parseInt(input);

            switch (iOpcao){
                // saindo do programa
                case 0:
                    System.out.println("OBRIGADO.\nATÉ LOGO!");
                    break;
                // submetendo um documento
                case 1:

                    System.out.print("ÁREA DE PESQUISA >> " );
                    trabalho.setsArea(reader.readLine());

                    System.out.print("Título >> " );
                    trabalho.setsTitulo(reader.readLine());

                    System.out.print("Resumo >> " );
                    trabalho.setsResumo(reader.readLine());

                    System.out.print("Conteudo >> " );
                    trabalho.setsConteudo(reader.readLine());

                    System.out.print("Categoria (1 - Artigos Cientificos || 0 - Artigos não-cientificos >> " );
                    input = reader.readLine();
                    number = Integer.parseInt(input);
                    trabalho.setiCategoria(number);

                    boolean cadTrab = conexao.cadastrarTrabalho(trabalho);
                    int iIdTrabalho = conexao.consultarIdTrabalho();

                    if(iIdTrabalho == -1){
                        System.out.println("NÃO FOI POSSÍVEL CONSULTAR O ID DO TRABALHO QUE ACABOU DE SER INSERIDO");
                    }else{
                        trabalho.setiIdTrabalho(iIdTrabalho);
                    }

                    Participante participante = cadastrarParticipante();
                    boolean cadPart = conexao.cadastrarParticipante(participante);

                    if (cadTrab == true && cadPart == true) {
                        if (conexao.associarTrabalhoAoAutor(trabalho.getiIdTrabalho(), participante.getsEmail())){
                        int iOpcaoAutor = 1;
                        while (iOpcaoAutor != 0) {
                            System.out.println("DESEJA COLOCAR ALGUM AUTOR A MAIS NESTE TRABALHO ?");
                            System.out.println("(1) SIM (0) NÃO");
                            input = reader.readLine();
                            iOpcaoAutor = Integer.parseInt(input);

                            if (iOpcaoAutor == 1) {
                                participante = cadastrarParticipante();
                                conexao.cadastrarParticipante(participante);
                                conexao.associarTrabalhoAoAutor(trabalho.getiIdTrabalho(), participante.getsEmail());
                            }
                        }
                        System.out.println("DOCUMENTO CADASTRADO COM SUCESSO!!!");
                    } else {
                        System.out.println("NÃO FOI POSSÍVEL CADASTRAR O SEU DOCUMENTO!");
                    }
                    }

                    int iOpcaoPalavra = 1;
                    String sPalavra;

                    while (iOpcaoPalavra == 1){
                        System.out.println("DESEJA COLOCAR ALGUMA PALAVRA CHAVE ?");
                        System.out.println("(1) SIM (0) NÃO");
                        input = reader.readLine();
                        iOpcaoPalavra = Integer.parseInt(input);

                        if (iOpcaoPalavra == 1){
                            System.out.print("PALAVRA-CHAVE >> ");
                            sPalavra = reader.readLine();

                            if (conexao.cadastrarPalavraChave(trabalho, sPalavra)){
                                System.out.println("PALAVRA CADASTRADA COM SUCESSO!");
                            }else{
                                System.out.println("NÃO FOI POSSÍVEL INSERIR A PALAVRA COM SUCESSO!");
                            }
                        }
                    }


                    break;
                // consultando um documento
                case 2:
                    int iListar = -1;
                    ArrayList<Trabalho> vTrabalhos = new ArrayList<Trabalho>();

                    while (iListar != 0){
                    System.out.println("(1) LISTAR TODOS OS TRABALHOS");
                    System.out.println("(2) LISTAR POR MESMA ÁREA");
                    System.out.println("(3) LISTAR POR MESMA CATEGORIA");
                    System.out.println("(4) LISTAR POR PALAVRA CHAVE");
                    System.out.println("(5) LISTAR POR NOME DO AUTOR");
                    System.out.println("(0) SAIR");

                    input = reader.readLine();
                    iListar = Integer.parseInt(input);

                    switch(iListar){
                        case 0:
                            break;

                        case 1:
                             vTrabalhos = conexao.consultarTodosTrabalhos();
                            for (int i = 0; i < vTrabalhos.size(); i++) {
                                System.out.println("----------------------");
                                    vTrabalhos.get(i).exibirTrabalho();
                                System.out.println("----------------------");
                            }
                            break;

                        case 2:
                            System.out.print("INFORME A AREA A SER PESQUISADA >> ");
                            String sArea = reader.readLine();
                            vTrabalhos = conexao.consultarPorArea(sArea);
                            for (int i = 0; i < vTrabalhos.size(); i++) {
                                System.out.println("----------------------");
                                    vTrabalhos.get(i).exibirTrabalho();
                                System.out.println("----------------------");
                            }
                            break;

                        case 3:
                            System.out.print("INFORME A CATEGORIA A SER PESQUISADA >> ");
                            input = reader.readLine();
                            int iCategoria = Integer.parseInt(input);
                            vTrabalhos = conexao.consultarPorCategoria(iCategoria);
                            for (int i = 0; i < vTrabalhos.size(); i++) {
                                System.out.println("----------------------");
                                    vTrabalhos.get(i).exibirTrabalho();
                                System.out.println("----------------------");
                            }
                            break;

                        case 4:
                            System.out.print("INFORME A PALAVRA A SER PESQUISADA >> ");
                            String sPalavraChave = reader.readLine();

                            ArrayList<Integer> vTrabalho = conexao.consultarTrabalhosPorPalavraChave(sPalavraChave);

                            for (int i = 0; i < vTrabalho.size(); i++){
                                System.out.println("----------------------");
                                trabalho = conexao.consultarTrabalho(vTrabalho.get(i));
                                trabalho.exibirTrabalho();
                                System.out.println("----------------------");
                            }
                            break;

                        case 5:
                            String sAutor;
                            ArrayList<Integer> aTrabalho = new ArrayList<Integer>();
                            System.out.print("INFORME O NOME DO AUTOR >> ");
                            sAutor = reader.readLine();

                            ArrayList<String> aEmail = conexao.consultarParticipante(sAutor);
                            for (int i =0; i < aEmail.size(); i++){
                                System.out.println("EMAIL >> " + aEmail.get(i));
                                aTrabalho = conexao.consultarIdTodosTrabalhos(aEmail.get(i));

                                for (int j=0; j < aTrabalho.size(); j++){
                                    System.out.println("----------------------");
                                    trabalho = conexao.consultarTrabalho(aTrabalho.get(j));
                                    trabalho.exibirTrabalho();
                                    System.out.println("----------------------");
                                }

                            }
                            break;

                        default:
                            System.out.println("SELECIONE UMA OPÇÃO VÁLIDA!");
                            break;
                    }


                    }
                    break; // break do primeiro switch (2)


                default:
                    System.out.println("SELECIONE UMA OPÇÃO VÁLIDA!");
                    break;
            }
        }

    }

        private static Participante cadastrarParticipante() {
        Participante participante = new Participante();
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String input;
        int number;

        try{
        System.out.println("-- CADASTRO DE PARTICIPANTE --");
        System.out.print("EMAIL >> ");
        participante.setsEmail(reader.readLine());

        System.out.print("NOME >> ");
        participante.setsNome(reader.readLine());

        System.out.print("ENDEREÇO >> ");
        participante.setsEndereco(reader.readLine());

        System.out.print("NUMERO DA RESIDÊNCIA >> ");
        input = reader.readLine();
        number = Integer.parseInt(input);
        participante.setiNumeroCasa(number);

        System.out.print("AFILIAÇÃO >> ");
        participante.setsAfiliacao(reader.readLine());

        System.out.print("PAÍS >> ");
        participante.setsPais(reader.readLine());

        System.out.print("TELEFONE >> ");
        participante.setsTelefone(reader.readLine());

        System.out.print("ÁREA >> ");
        participante.setsArea(reader.readLine());

        System.out.println("VOCÊ É PESQUISADOR ?");
        System.out.println("(1) SIM (0) NÃO");
        int iResposta = 0;
        input = reader.readLine();
        iResposta = Integer.parseInt(input);

        if (iResposta == 1)
            participante.setbPesquisador(true);
        else
            participante.setbPesquisador(false);

        System.out.println("VOCÊ É AVALIDOR ?");
        System.out.println("(1) SIM (0) NÃO");
        input = reader.readLine();
        iResposta = Integer.parseInt(input);

        if (iResposta == 1)
            participante.setbAvaliador(true);
        else
            participante.setbAvaliador(false);

        System.out.println("VOCÊ É ESPECIALISTA ?");
        System.out.println("(1) SIM (0) NÃO");
        input = reader.readLine();
        iResposta = Integer.parseInt(input);

        if (iResposta == 1)
            participante.setbEspecialista(true);
        else
            participante.setbEspecialista(false);
        }catch(IOException i){
            i.printStackTrace();

        }catch(NumberFormatException n){
            System.out.println("INFORME SOMENTE NÚMEROS!");
            n.printStackTrace();
        }
        return participante;
    }


}
